#ifndef SYNCOBJECT_H
#define SYNCOBJECT_H

#include "QString"
#include "QVariant"
#include <QObject>


class SyncObject : public QObject
{
    Q_OBJECT
public:
    SyncObject(QString name,QString type,QString subtype);
    ~SyncObject();
    QString getName();
    QString getType();
    QString getSubtype();
    void initArguments(int numargs, ...);
    void addArgument(QVariant* arg);
    void setArgument(int argNum, QVariant* arg);
    QVariant* getArgument(int argNum);
    QList<QVariant*> getArgs();
    bool getInitialized();
    void finishInitializtion();
private:
    QString name,type,subtype;
    QList<QVariant*> args;
    bool initialized;

signals:
    void argAdded(QString name, int argNum, QVariant* arg);
    void argChanged(QString name, int argNum,QVariant* arg);
    void finalized(SyncObject* thisSyncObject);

};

#endif // SYNCOBJECT_H
